﻿/**
 * A view for hardware to get updates from the controller. Directed at a Launchpad device 
 * Author: Anders Høst | ahkj@itu.dk
 * date: 06 Dec 2010
 */
using AutomaTones.Model;
using AutomaTones.Model.Automaton_Model;

namespace AutomaTones.View {
    interface IHardwareView {
        /// <summary>
        /// Method that will be notified when the Controller wants the Launchpad to change state of 
        /// a particular pad.
        /// </summary>
        /// <param name="cell"></param>
        void SetCell(int x, int y, State state);

        /// <summary>
        /// Method that will be notified when the Controller wants the IVies to display a whole
        /// grid of CA.
        /// </summary>
        /// <param name="stateGrid"></param>
        void SetGrid(State[,] stateGrid);

        /// <summary>
        /// Method for some intherpetation of a user defined grid that is registred 
        /// with the same IController as the IHardwareView.
        /// </summary>
        void SetArbitraryGrid(State[,] StateGrid);

        /// <summary>
        /// Clear the grid and setting it to its initial state.
        /// </summary>
        void ClearGrid();
    }
}
